package Guigu6;
/*
 * 一、设计类，其实就是设计类的成员
 * 
 *   属性 = 成员变量 = field = 域、字段
 *   方法 = 成员方法 = 函数 =method
 *   创建类的对象 = 类的实例化 = 实例化类
 *   
 * 二、类和对象的使用
 *   1、创建类、设计类的成员变量
 *   2、创建类的对象
 *   3、通过“对象.属性”或“对象.方法” 调用对象的结构
 * 
 * 三、如果创建了一个类的多个对象，则每个对象都独立的拥有一套类的属性（非static的）
 *     意味着：如果我们修改一个对象的成员变量a，则不影响另外一个对象的成员变量a的值。
 * 
 * 四、内存解析
 * 
 */




//测试类
public class PersonTest {

	public static void main(String[] args) {
		//创建对象
		Person p1 = new Person();
		//调用成员变量
		p1.name = "石文学";
		p1.isMale = true;
		System.out.println(p1.name);
		//调用方法
		p1.eat();
		p1.sleep();
		p1.talk("Chines");
		
		//******************************
		
		Person p2 = new Person();
		System.out.println(p2.name);//输出null
		
		//*******************************
		
		//将p1变量保存的地址值赋给了p3,导致p1和p3指向了堆空间中的同一个对象实体。
		Person p3 = p1;
		System.out.println(p3.name);//输出石文学
		
		p3.name = "普元庆";
		System.out.println(p1.name);
		System.out.println(p3.name);
	}

}
//设计类
class Person
{
	//属性
	String name;
	int age = 1;
	boolean isMale;
	
	//方法
	public void eat()
	{
		System.out.println("人可以吃饭");
	}
	public void sleep()
	{
		System.out.println("人可以睡觉");
	}
	public void talk(String language)
	{
		System.out.println("中国人会说"+ language);
	}
}
